package fr.coupedumonde2014.app.Task;

import android.os.AsyncTask;

import java.util.List;

import fr.coupedumonde2014.app.activity.ListMatch;
import fr.coupedumonde2014.app.modele.Match;
import fr.coupedumonde2014.app.modele.Utilisateur;
import fr.coupedumonde2014.app.service.IBetService;

/**
 * Created by gfimac on 28/05/2014.
 */
public class LoadTask  extends AsyncTask<String, Void, List<Match>> {

    public interface LoadTaskCallback{
        public void onLoadTask();
        public void onLoadTaskErreur();
    }

    LoadTaskCallback callback;

    public LoadTask(LoadTaskCallback callback){
        this.callback = callback;
    }

    @Override
    protected void onPreExecute() {
        super.onPreExecute();
    }

    @Override
    protected List<Match> doInBackground(String...data) {
        IBetService service = new IBetService();

        String id = data[0];

        try {
            List<Match> listMatchsRecu = service.matchs();
            List<Match> listMatchesParisRecu = service.paris(id);
            List<Utilisateur> classement = service.classement();

            ListMatch.matchesParis.clear();
            ListMatch.matchesAVenir.clear();
            ListMatch.classement.clear();

            listMatchsRecu.removeAll(listMatchesParisRecu);

            if (listMatchsRecu != null)
                ListMatch.matchesAVenir.addAll(listMatchsRecu);

            if (listMatchsRecu != null)
                ListMatch.matchesParis.addAll(listMatchesParisRecu);

            if (classement != null)
                ListMatch.classement.addAll(classement);


            return listMatchsRecu;
        } catch (IBetService.NetworkException e) {
            e.printStackTrace();
        }

        return null;
    }

    @Override
    protected void onPostExecute(List<Match> listMatchsRecu) {
        super.onPostExecute(listMatchsRecu);

        if (listMatchsRecu == null)
            callback.onLoadTaskErreur();
        else {
            callback.onLoadTask();
        }
    }
}